1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import com.google.caliper.Benchmark;
20 import com.google.caliper.Param;
21
22 import java.util.List;
23
24
25
26
27
28
29 public class ImmutableListCreationBenchmark {
30
31 @Param({"10", "1000", "1000000"})
32 int size;
33
34 private static final Object OBJECT = new Object();
35
36 @Benchmark int builderAdd(int reps) {
37 int size = this.size;
38 int dummy = 0;
39 for (int rep = 0; rep < reps; rep++) {
40 ImmutableList.Builder<Object> builder = ImmutableList.builder();
41 for (int i = 0; i < size; i++) {
42 builder.add(OBJECT);
43 }
44 dummy += builder.build().size();
45 }
46 return dummy;
47 }
48
49 @Benchmark int preSizedBuilderAdd(int reps) {
50 int size = this.size;
51 int dummy = 0;
52 for (int rep = 0; rep < reps; rep++) {
53 ImmutableList.Builder<Object> builder = new ImmutableList.Builder<Object>(size);
54 for (int i = 0; i < size; i++) {
55 builder.add(OBJECT);
56 }
57 dummy += builder.build().size();
58 }
59 return dummy;
60 }
61
62 @Benchmark int copyArrayList(int reps) {
63 int size = this.size;
64 int dummy = 0;
65 for (int rep = 0; rep < reps; rep++) {
66 List<Object> builder = Lists.newArrayList();
67 for (int i = 0; i < size; i++) {
68 builder.add(OBJECT);
69 }
70 dummy += ImmutableList.copyOf(builder).size();
71 }
72 return dummy;
73 }
74
75 @Benchmark int copyPreSizedArrayList(int reps) {
76 int size = this.size;
77 int tmp = 0;
78 for (int rep = 0; rep < reps; rep++) {
79 List<Object> builder = Lists.newArrayListWithCapacity(size);
80 for (int i = 0; i < size; i++) {
81 builder.add(OBJECT);
82 }
83 tmp += ImmutableList.copyOf(builder).size();
84 }
85 return tmp;
86 }
87 }